atomliste$=" HHeLiBe B C N O FNeNaMgAlSi P SClAr KCaScTi VCrMnFeCoNiCuZnGaGeAsSeBrKrRbSr YZrNbMoTcRuRhPdAgCdInSnSbTe IXeCsBaHfTa WReOsIrPtAuHgTlPbBiPo"
OPTION BASE 1
DIM atomgewicht(69)
DIM gewicht(12) !Gewicht pro Atom in der Formel
DIM atomsymbol$(12)
FOR m&=1 TO 69
READ atomgewicht(m&)
NEXT m&
DATA 1.0079,4.00260,6.941,9.01218,10.81
DATA 12.011,14.0067,15.9994,18.99840,20.179
DATA 22.98977,24.305,26.98154,28.086
DATA 30.97376,32.06,35.453,39.948
DATA 39.098,40.08,44.9559,47.90,50.9414
DATA 51.996,54.9380,55.847,58.9332,58.70,63.546,65.38
DATA 69.72,72.59,74.9216,78.96,79.904,83.80
DATA 85.4678,87.62,88.9059,91.22,92.9064,95.94
DATA 97,101.07,102.9055,106.4,107.868,112.40
DATA 114.82,118.69,121.75,127.60,126.9045,131.30
DATA 132.9055,137.34,178.49,180.9479,183.85
DATA 186.207,190.2,192.22,195.09,196.9665,200.59
DATA 204.37,207.19,208.9806,210
'
IF NOT programm!
' Accessorynamen ins Deskmenü eintragen
IF MENU_REGISTER(ap_id&," Molmasse...")=-1
' Kein Platz im Deskmenü
DO
~EVNT_TIMER(-1)
LOOP
ENDIF
ENDIF
'
DO
IF NOT programm!
~EVNT_MESAG(0) !Auf's angeklickt werden warten
ENDIF
IF MENU(1)=40 OR programm! !'AC_OPEN'
DEFMOUSE 0
' Menüleiste sperren
~WIND_UPDATE(1)
' Dialogboxkoordinaten auf Bildschirm zentrieren
~FORM_CENTER(eingabe_adr%,x&,y&,b&,h&)
' Bildschirmplatz reservieren
~FORM_DIAL(0,0,0,0,0,x&,y&,b&,h&)
' Eingabezeile leeren
BYTE{{OB_SPEC(eingabe_adr%,wert&)}}=0
'
' Molmasse zu Anfang 0 Gramm
CHAR{OB_SPEC(eingabe_adr%,ergebnis&)}="0"
FOR m&=prozent1& TO prozent1&+12
CHAR{OB_SPEC(eingabe_adr%,m&)}=""
NEXT m&
'
REPEAT
abbruch!=FALSE
'
' Ausgangsknöpfe entfärben
undo(eingabe_adr%,rechne&)
undo(eingabe_adr%,schluss&)
'
' Dialogbox zeichnen
~OBJC_DRAW(eingabe_adr%,0,3,x&,y&,b&,h&)
'
' Dialog durchführen
r_obj%=FORM_DO(eingabe_adr%,0)
'
SELECT r_obj%
CASE rechne&
'
' Text aus Dialogbox holen
text$=CHAR{{OB_SPEC(eingabe_adr%,wert&)}}
'
CLR summe
atomanzahl&=1
FOR m&=prozent1& TO prozent1&+12
CHAR{OB_SPEC(eingabe_adr%,m&)}=""
NEXT m&
IF text$<>""
FOR ort&=1 TO LEN(text$)
' Alle eingegebenen Zeichen überprüfen
buchstabe$=MID$(text$,ort&,1)
IF buchstabe$>="A" AND buchstabe$<="Z"
'
' Eingelesenes Zeichen ist großer Buchstabe
a$=MID$(text$,ort&+1,1)
'
IF a$>="a" AND a$<="z"
' Großer Buchstabe hat kleinen Buchstaben als Nachbarn
' Ist Kombination in Atomliste?
stelle&=INSTR(atomliste$,buchstabe$+a$)
IF stelle&>0
' Kombination gefunden
atomsymbol$(atomanzahl&)=buchstabe$+a$
INC ort&
hole_haeufigkeit(stelle&,ort&,summe)
ELSE
' Kombination nicht gefunden, nach einzelnem Buchstaben suchen